home *** CD-ROM | disk | FTP | other *** search
/ Magnum One / Magnum One (Mid-American Digital) (Disc Manufacturing).iso / d7 / commtutr.arc / COMMTUTR.TXT next >
Text File  |  1988-06-10  |  63KB  |  1,124 lines

  1. *****************************************************************
  2.  
  3. The following text file was captured by me as a result of my call
  4. to Jim Davis' Retreat (713 497-2306) in Houston, Texas.  I went
  5. to his board to download GTCTL and GTLOG - two utilities used
  6. with GT PowerComm.  Jim came on the line to assist as I
  7. experienced transmission problems.  I took the opportunity to ask
  8. questions about GT PowerComm and PC communications.  Jim's
  9. response is being presented here as an aid to other `Neophytes"
  10. to PC communications.
  11.  
  12.                        << Raymond Wood >>
  13.  
  14. ... In the vernacular of the communications industry, there are a few
  15. concepts that need to be understood before understanding 'HOW' is
  16. accomplished.  For example, the word BAUD.  This essentially
  17. means 'bits per second'.  In fact, it means something a little
  18. different than that, but for openers, let's say that's what it
  19. means. 
  20.  
  21. Now, whenever two machines are going to try to communicate with
  22. each other a couple of things have to be done by both.  They must
  23. both be set to send and receive at the same frequencies, for
  24. example.  The most often used frequency, today, is 1200 baud. 
  25. That means 1200 bits per second, as I said before.  Well, most
  26. users have no idea what bits are involved in a file transfer or a
  27. message transfer.  Let's look at another standard word: BYTE. 
  28. There are 8 bits of information contained in a byte.  That is, a
  29. byte is merely a set of 8 bits.  Within a set of 8 bits there are
  30. 256 permutations available.  From all zeroes to all ones.  Each
  31. letter in the alphabet and each digit and each other special
  32. character is represented by a predetermined set pattern of
  33. those 8 bits.  A capital 'J' has a different pattern than a lower
  34. case 'j', for example.  Given that that is true, it is easy to see
  35. that no more than 128 of the total possible patterns would be
  36. necessary to represent any text.  Thus, we have another 128 that
  37. may be used for 'special purposes'.  What, for example?  I'll get
  38. to that. 
  39.  
  40. The sending of bits (on or off, high or low, in other words
  41. binary information) is, by definition, a binary process.  That is,
  42. the computers need only recognize one of two states.  The
  43. telephone, on the other hand, carries information that is other
  44. than binary.  It can faithfully represent different tones, pitch,
  45. and volume.  This is called analog rather than binary.  The
  46. almost sole purpose of a modem is to translate binary signals
  47. into analog and vice versa.  When you  are going to send a set of
  48. bits across a telephone you will have to convert those binary
  49. 'states' into some form of sound (which is, after all, what the
  50. telphone is designed to best carry).  Modulating a signal from
  51. binary to analog is the 'Mo' in Modem. 
  52. Demodulating an analog signal back into binary is the reverse and
  53. is the 'Dem" in Modem. 
  54.  
  55. If we want the transmission to be highly reliable then we must do
  56. more than simply send the binary information (modulated).  We have
  57. all heard 'noise' on a telephone line and without doing more than
  58. demodulating into bits, the receiver will no doubt have a
  59. virtually impossible time of being able to tell what sounds are
  60. bits or just plain noise.  In some applications, we don't really
  61. care all that much.  Examples include the transmission of plain
  62. text files.  Recall that all that was necessary to send any
  63. letter, many special symbols and any digit was a capability that
  64. required no more than 128 different combinations of bits.  7 bits
  65. are sufficient to represent 128 permutations of those bits.  That
  66. is, if a byte were only 7 bits long then it could contain as many
  67. as 128 different sets of bits being on or off).  However, a byte
  68. is 8 bits long by definition.  So, in what is called ASCII
  69. (American Standard Code for Information Interchange)
  70. transmissions we can use the first 7 of those bits to represent
  71. data and the 8th bit to represent some form of insurance or
  72. integrity check that the first 7 were received as they were sent.
  73.  
  74. This is called using 'PARITY'.  You can establish a convention
  75. between the sender and the receiver that every byte WILL have an
  76. even number of bits (or odd) and use the 8th bit to do so at the
  77. sending end.  If the receiving end ever gets a byte that has odd
  78. parity then it knows that it received the byte in error (some bit
  79. or bits were either added or lost).  That is all there is to
  80. parity checking in an ASCII transmission.  Not at all very good,
  81. but sufficient for most text. 
  82.  
  83. Program files or data files or even text files that have been
  84. compressed (ARChived) in some way use all 8 bits in every byte to
  85. represent information.  So, we have lost the ability to use
  86. parity as an integrity check vehicle.  Instead, in every protocol
  87. other than ASCII we add either one or two full bytes to the end
  88. of a 'block' of bytes.  The block is a fixed length (usually 128
  89. bytes).  The purpose of those one or two bytes is to contain what
  90. is called a Cyclic Redundance Check (CRC) character or word. 
  91. Like parity, the CRC is constructed at the sending end to create
  92. a pattern of bits that demonstrates that the preceeding entire
  93. block of bytes has been received with integrity.  The Receiving
  94. end dynamically creates its own CRC from the information received
  95. and compares it to the byte or bytes received at the end of a
  96. block.  If it doesn't match then the block must be rebroadcast (requested
  97. by sending to the sender a signal that says: "Negative Acknowledge" -
  98. NAK.  If it was ok then it sends an ACK - meaning "Acknowledge", and the
  99. next block is sent. 
  100.  
  101. Now, let's go back to the idea of baud.  At 1200 baud, the modems
  102. are able to send and receive 1,200 bits per second.  How many bits
  103. per byte? Yes, 8, but not on a telephone line if you are using
  104. modems!  Instead, we bracket a byte by sending what is called a
  105. start bit before the 8 bits of data and ending with what we call
  106. a stop bit (sometimes 2 - at 300 baud).  So, every byte requires
  107. 10 bits, not 8.  Thus, at 1200 baud your maximum possible data
  108. transfer rate is 120 characters (bytes) per second! 
  109.  
  110. OK.  Now we know what we have to send and how many bits are
  111. required and that there is something called a response from the
  112. receiver called either an ACK or NAK.  So why don't we get 120
  113. bytes per second transfers using 1200 baud modems?  Well, we
  114. already saw that for every 128 bytes of data, in most protocols,
  115. we send an additional one or two bytes of CRC.  We DO NOT count
  116. the CRC byte(s) as data!  Yet it takes time to transmit.  Also,
  117. it takes time for most protocols to turnaround and react to the
  118. ACK or NAK.  For example, assuming all is well, the sender  has a
  119. few hundred blocks to upload to the receiver.  After the first
  120. block is sent he, by convention, must wait for the receiver to
  121. analyse the CRC and decide if it is going to respond with the ACK
  122. or a NAK.  Then it takes a moment to send that to the sender who,
  123. in turn, has to receive it, verify that it got here properly (was
  124. not just noise) and decide whether to send the next block or to
  125. resend to last one that was improperly received by the receiver. 
  126. That takes time.  All time used as described above is called
  127. 'overhead'.  Overhead does not include the transmission of DATA,
  128. only control bits and time.  Thus, it is impossible to get to an
  129. effective DATA transmission rate of even 118 characters per
  130. second let alone 120 (CRC, etc).  But, we know that the telephone
  131. is capable of carrying sound in both directions simultaneously. 
  132. So, why should the sender have to wait for the receivers ACK or
  133. NAK?  This mode of operation is often called 1/2 duplex, by the
  134. way. 
  135.  
  136. The answer, of course, is that it does so only by convention. 
  137. Newer protocols do not wait.  They assume that a transmission
  138. will be successful and will result in getting an ACK.  So they go
  139. immediately to the task of sending the next block.  Always
  140. listening, of course, for that ACK or NAK.  When it is received
  141. as an ACK all is well and we have gained performance.  If not,
  142. the software has to decide which block or blocks have to be
  143. rebroadcast.  In order to do that it should be obvious that the
  144. ACK or NAK is not simply a single byte.  Rather, it includes a
  145. byte that is called the packet number (0 to 255), and possibly
  146. more information.  If an ACK is received the recipient knows
  147. which of a series of blocks(packets) it is referring to. 
  148. Similarly it would know with an NAK.  Yep, more bits and more
  149. overhead! 
  150.  
  151. Well, then let's see if I can get to a few more contemporary
  152. terms and information more practical to know at this time. 
  153.  
  154. For example, almost nobody uses ASCII transfers any more.  Why
  155. should they when they are so poorly controlled and when you
  156. realize that ONLY un-compressed raw text can be sent with it? 
  157. Still, a great many first time communications users try to do so.
  158.  
  159. And, while the transmissions will appear to work, the resulting
  160. files will be garbage, of course.  Only 7 oF the 8 bits are being
  161. transmitted in each byte!  Many comm programs will allow you to
  162. use ASCII even when they should know that the result will be
  163. unsatisfactory.  For example, if a filename ends with COM or EXE
  164. then, again by convention, that file is an executable program. 
  165. ALL such programs use 8 bits in every byte and could not,
  166. therefore, be transmitted via ASCII.  Some comm programs will not
  167. let you try to do something that stupid (only, of course, to a
  168. knowledgeable user). 
  169.  
  170. What are the protocols that currently exist in wide spread usage
  171. across the country?  The most frequently seen is called XMODEM. 
  172. This protocol is quite reliable (about 96%) and uses blocks of
  173. 128 bytes plus one CRC character at the end of every block.  It
  174. is because it uses only one CRC character that the reliability is
  175. only 96%. 
  176.  
  177. Another is called XMODEM/CRC.  This is exactly the same as XMODEM
  178. but it uses two CRC characters.  The result is that the effective
  179. performance is reduced insignificantly (1/130th), but the
  180. reliability is increased to about 99.6%.  In any case where you
  181. have a choice between the two you would, of course, opt for
  182. XMODEM/CRC. 
  183.  
  184. Then, and this is particulary true in environments where one of
  185. the computers being involved is either a mini or a mainframe,
  186. there is a protocol which is called Kermit.  I believe it uses
  187. 128 byte blocks and other overhead such as a 'header block -
  188. block zero' that provides control information.  It is also very
  189. reliable (99.6% I believe) but it is SLOW!!!  It is used only if
  190. that is the only protocol available. 
  191.  
  192. Then there is what is called YMODEM.  This protocol differs from
  193. the earlier ones in that it sends 8 - 128 byte blocks together as
  194. a 'super block' before it sends the two byte CRC word.  As a
  195. result it is the fastest protocol that I have ever seen for micro
  196. computers that use 'dumb' modems (ie, non self correcting ones). 
  197. There are two times when one should not use this protocol if
  198. there is a choice: 1) when the line noise is great on the
  199. telephone (for a retransmission of a 'block' that failed involves
  200. 1024+2 bytes even if only one bit was gained or lost).  That is a
  201. lot of overhead!  And 2), in an environment like PC-PURSUIT that
  202. involves long duration hand shaking turnaround delays. 
  203.  
  204. Another protocol is called Telink.  Telink uses 128 byte blocks
  205. but has an advantage over the other ones.  It results in a file
  206. that is exactly the same size and has the same date and time
  207. stamp on it as the one being sent.  Ymodem, for example, adds to
  208. (pads) a block until it is exactly 1024 bytes (the last record)
  209. even if that record only contains a few bytes of data. 
  210.  
  211. GT PowerComm has a unique protocol called 1kTelink.  It is the
  212. same as Telink except it uses 1024 byte blocks and is therefore
  213. more efficient.  Like YMODEM, 1kTelink should only be used on
  214. clean phone lines for performance, but unlike YMODEM it can be
  215. used on even a short file with efficiency. 
  216.  
  217. In the case of GT, and then only if communicating GT to GT, if
  218. either YMODEM or 1kTelink experience a set of 6 errors during the
  219. transmission of a single file then it will automatically fallback
  220. to 128 byte blocks to greatly increase the odds that the
  221. transmission can be completed and to greatly increase the
  222. efficiency on what is presumed to be a noisy line!!!  Neat!!! 
  223.  
  224. The BEST protocol at this time for use in a PC-PURSUIT environment
  225. is called Wxmodem which stands for 'Windowing Xmodem'.  This uses 128
  226. byte blocks but it does not wait between blocks for a response.  It is
  227. always listening for those ACKs and NAKs, of course.  Extremely high
  228. performance is the result, relative to Xmodem or the other 1/2 duplex
  229. protocols.  Wxmodem tries to stay 4 blocks ahead of the receiver at all
  230. times while the receiver tries to get 'caught up'.  The difference
  231. between the block being sent and the most currently received ACK or NAK
  232. is called the window (a number between 1 and 4).
  233.  
  234. Then there are two more odd protocols that have become relatively
  235. visible of late.  These are called ZMODEM and Batch-YAM.  ZMODEM
  236. was designed for use in a PC-PURSUIT like environment.  Like
  237. WXMODEM, the best protocol for use in that environment, ZMODEM
  238. does not wait for ACKs and NAKs.  Unlike WXMODEM, ZMODEM is
  239. relatively slow.  For one reason, it uses no buffering.  Thus
  240. every 512 bytes of data it must make another disk access. 
  241. Batch-YAM is much like YMODEM except that it allows you to specify a
  242. set of file names (a 'batch' of them).  It is slower than YMODEM
  243. except, possibly on PC-PURSUIT. 
  244.  
  245. What must a user know to do a file transfer?  What protocol is
  246. available on BOTH ends of the transmission, the file name of the
  247. file on his end and the file name on the other end.  That is, if
  248. the receiveing end of a transmission already has a file with the
  249. name of the file you want to send to it, naturally you will call
  250. the new file something else.  Thus, every comm program allows the
  251. specification of the file name on your end and then the name on
  252. the other end.  (It is not just an irritant that you 'already'
  253. typed that in, it is necessary).  Having said that I must make an 
  254. exception  - Telink  and 1kTelink.   These protocols allow batch
  255. names,  like Batch-YAM,  but the receiving end and transmitting end
  256. file names are the same.
  257.  
  258. That's it for now. 
  259.  
  260. Wood: I have a few questions. ok? 
  261.  
  262. Davis: Sure. 
  263.  
  264. Wood: Four to be exact.  
  265.  
  266. 1- You mention date/time stamp on one of your protocol
  267. descriptions but did not define its use prior to that.  What is
  268. this and what is it used for?
  269.  
  270. PC-DOS or MS-DOS marks every file with the date and time that
  271. file was created or last modified.  So, let's say I want to send
  272. you a copy of my transmission log that was dated 12/31/86 (by
  273. DOS).  If I use any protocol other that Telink the resulting file
  274. on your end will be dated with the date and time it was created
  275. (ON YOUR SYSTEM!)  Today, now.  Telink creates that file and
  276. leaves it on your system with my date and time stamp still
  277. intact. 
  278.  
  279. When I receive an ARCed file this time/date stamp is in the EXE
  280. module somewhere? 
  281.  
  282. Davis: It is several places in that example.  In the directory record on
  283. your disk is the formal residence of the stamp.  So, in the case
  284. of an ARC file, it has a date and time stamp.  Additionally,
  285. within the ARC file each record, which is merely another way of
  286. saying 'each file within the ARC file', has the date and time
  287. that THAT file had in its directory record BEFORE it had been
  288. ARCed into the ARC file.  When you unARC, the resulting file will
  289. not have todays date and time as a stamp but the one recorded
  290. within the ARC file for it. 
  291.  
  292.  
  293. Wood: Good, I understand perfectly.  I can relate it to what we
  294. sometimes do on the mainframe. 
  295.  
  296.  
  297. 2-You mentioned padding with YMODEM.  What is this?  Does the
  298. receiving end recognize the padding and discard it automatically?
  299.  
  300. Davis: Let's say the file you want to send is exactly 1025 bytes long. 
  301. Each block transmitted by YMODEM contains 1024 bytes of date plus
  302. 2 bytes of CRC.  It will, therefore, take two blocks to send that
  303. file.  The second block will contain only 1 byte of data plus
  304. 1023 padded "blanks" - actually End Of File marks.  YMODEM sends
  305. 1024 bytes every time!.  The receiver does not automatically
  306. strip those padded bytes.  Indeed, it passes them to the
  307. resulting file so that it will always be an even multiple of the
  308. 1024.  Thus, you sent a 1025 byte file and it becomes a 2048 byte
  309. file!! 
  310.  
  311.  
  312. Wood: Ok--3...You came to a conclusion without what I thought was the
  313. necessary support when you said "...thus 512 bytes result in a
  314. disk access with ZMODEM..."  I did not follow the conclusion.
  315. Help! 
  316.  
  317. Davis: Sure.  As we discussed before the tutorial when we talked about
  318. buffers, a buffer is a fixed length (amount) of memory,
  319. sufficient to contain some number of blocks of data.  In the case
  320. of ZMODEM, a block is 256 bytes, by the way.  If the protocol
  321. used buffers there could be some large multiple of 'blocks' in
  322. memory awaiting transmission.  Instead,  ZMODEM does not use a
  323. buffer.  Thus, it must have in memory only one sector of data at
  324. a time.  In the PC world, a sector is 512 bytes, or two blocks of
  325. data as far as ZMODEM is concerned.  Again, since that is the
  326. case, after two blocks (512 bytes), ZMODEM must go back to the
  327. disk to get more data to transmit. 
  328.  
  329. Wood: One of the first things we learned in programming school 20+
  330. years ago was that you could do things a lot faster with more
  331. than one buffer.  WE typically (or the system) use at least two.
  332.  
  333. Why would ZMODEM not use any?  Is there a memory problem? 
  334.  
  335. Davis: I can't speak for the authors of ZMODEM but I will say that it is
  336. typically not a protocol that is written into a program like GT
  337. PowerComm (As is Xmodem or Wxmodem, etc.).  Instead, it comes
  338. rather conveniently in the form of an EXE program that can be run
  339. independantly of the comm package or by a simple shell out of the
  340. comm package to it.  In the latter case, there is no way to know
  341. how much memory might be available in the majority of systems. 
  342. The program itself, could, of course, simply find out.  But you
  343. will recall that BOTH ends of a transmission are highly dependant
  344. upon compatible software.  It might be that the author of ZMODEM
  345. simply took the easy way out.  I don't know. 
  346.  
  347.  
  348. Wood: This leads nicely into my final question which deals with today's
  349. comm packages.  When I first bought my PC I did the necessary
  350. research by reading reviews and magazines like Software Digest. 
  351. I rejected XTALK and settled on HYPERACCESS.  After I started
  352. using it I discovered Shareware.  I have come to the conclusion
  353. that there are two classes of products in the Micro world today. 
  354. Commercially developed and other.  My company uses XTALK.  In the
  355. corporate environment you order a comm package and you get what
  356. the corporate gurus decide is best for you.   
  357. I like ProCommm.  I do not like to feel that I was ripped off by
  358. buying HyperAccess.  I just feel that I was uninformed at the
  359. time.  In this area ProComm seems to reign as King with the
  360. majority of PC users.  
  361.  
  362. 4- What are the advantages of GT over ProComm? 
  363.  
  364. Davis: Excellent question.  Let me try to deal with it professionally
  365. instead of from the bias I would naturally have for GT PowerComm.
  366.  
  367. (When I wrote the documentation for GT I twice called it ProComm
  368. - how embarrassing it would have been if I had released it
  369. without an edit). 
  370.  
  371. Let's go back a little in time.  Before the era of the PC
  372. virtually all micro computers were 8 bit in design rather than
  373. 16.  At that time the undisputed King in the area of comm
  374. packages was Crosstalk.  It enjoyed an excellent reputation and
  375. was well supported.  Further, it was not terribly expensive and
  376. it was one of the only comm packages that supported what was to
  377. become a whole set of protocol transfer methods (it was an XMODEM
  378. protocol).  Well, in those days if your comm package didn't work
  379. reliably and you were not sure if it was a hardware problem or a
  380. software problem you simply put up Crosstalk.  If it worked the
  381. conclusion was that the problem was software.  It was THAT
  382. reliable. 
  383.  
  384. Along came the PC's.  Crosstalk was ported to the 16 bit world,
  385. but in a way that made very little progress in terms of adapting
  386. to the capabilities of the PC's.  To this very day, I believe it
  387. is impossible to change directories in Crosstalk, though I could
  388. be wrong.  In essence, Crosstalk continues to be available and
  389. though it runs reliably in a 16 bit environment it runs like it
  390. was in a CP/M environment, not a DOS one. 
  391.  
  392. Then there was a leading contender from the shareware world
  393. called QMODEM.  It enjoyed an excellent following and was
  394. remarkably efficient by comparison to Crosstalk - MUCH faster, in
  395. fact.  And, it had a couple of contemporary protocols not
  396. available in Crosstalk.  It took off and has been a very
  397. successful product ever since.  In my opinion it would still be a
  398. champion product save only for a few 'author' problems.
  399. It is a great program, nonetheless.
  400.  
  401. About the same time the Hayes Modem manufacturers
  402. introduced SmartComm II as a commercial product and it was being
  403. shipped with many of their modems.  By brand identification it
  404. was accepted.  This, despite that it is the clumsiest of all the comm
  405. packages I have ever seen.  It was, furthermore, not very
  406. efficient by comparison to QMODEM.  It has essentially been
  407. unchanged since its introduction (Sound like Crosstalk all over
  408. again?) 
  409.  
  410. A new comm package hit the scene called ProComm.  In this program
  411. the author spent a great deal of attention to 'image'.  He used
  412. imaginative ideas like a whistle that announced opening and
  413. closing of windows, the windows themselves were innovative, etc. 
  414. It was no where near as efficient as QMODEM, but it captured the
  415. imagination of the users.  And, like QMODEM, the price was right
  416. - $0 to try it out, and then if you decided to, you sent them a
  417. small check - but that's shareware. 
  418.  
  419. Procomm has advanced far faster than QMODEM in terms of
  420. incorporating different protocols and the incorporation of what
  421. is called a Host mode, or unattended mode of operation
  422. (autoanswer of modem, etc.)  It became King as you call it by
  423. being both innovative and current - but not by being efficient,
  424. though it is quite respectable. 
  425.  
  426. GT PowerComm was only formally announced to the shareware world
  427. on the 21st of last month!!!(2/21/87).  It includes 8 protocols, not
  428. including the also present ASCII, of course.  At 2400 baud, I
  429. routinely establish DATA transfer rates of 235.5 characters per
  430. second with it, while the best I ever got with Qmodem was about
  431. 220 and with Procomm about 218.  Actually, I did get a 225 once
  432. with Qmodem, but only once. 
  433.  
  434. So, in terms of performance, nothing has come close to being as
  435. fast as GT PowerComm.  But that, as we saw with Procomm, is not
  436. all that the user is looking for.  We have incorporated an
  437. extremely rich function called the LOG.  Into that log is
  438. recorded all connects, disconnects, messges to the host,
  439. passwords used to gain access, bad passwords tried, and even more
  440. interesting, the names and time to trasmit every file that goes
  441. from the GT to or from another computer, and along with that is
  442. the total byes involved and the name of the protocol used in the
  443. transmission and, finally, manually created notes and messages. 
  444. So what, you might ask.  I would answer that if you were the Sysop
  445. of a board, or of a Corporate system, you MUST be able to
  446. determine who sent you a file or a messgage and when.  (Yes, date
  447. and time stamps are included in all entries in the log).  For
  448. example, what would be your reaction if you found that  a program
  449. on your disk was a trojan horse if you could not determine where
  450. it came from?  Or, say you created a proforma for your department
  451. and it has been downloaded by 18 different executives before you
  452. discover a major error in it.  Wouldn't you want to be able to
  453. determine who has received that file?  All those kinds of
  454. questions are automaticlly answered via GT's log and GTLOG.  The
  455. main reason for feeling that there is a substantial difference
  456. between GT and Procomm for the user is in the area of SUPPORT.  I
  457. take it that it has occurred to you that I have been talking to
  458. you for more than three hours already?  And I don't even know if
  459. you are a registered user of GT.  Well, I am only one of two of
  460. us that do exactly the same thing.  The author of GT PowerComm, Paul
  461. Meiners, provides 24 hour a day access to his system as I do (as the
  462. author of the companion software).  We have provided many new
  463. versions of GT powerComm over the past year and are about to
  464. provide release 12.10 only two weeks after announcing 12.00 on
  465. the 21st!  Why, because we are constantly enhancing the products
  466. and our users want us to do so.  We have several major clients
  467. already including one of the major Oil companies, one of the
  468. major airlines and one of the countries largest school
  469. districts!!!  Finally, nobody has a better Host mode than GT
  470. PowerComm!!!  I run a BBS using nothing else.  That is power and
  471. function!  Try it, you'll love it!! 
  472.  
  473. Wood: I can't wait to put the system together!  Rest assured that I
  474. will register the program.  As an ex-programmer I know what is
  475. involved.  I wish the product much luck.   Did you say 3 hours? 
  476.  
  477. Davis: I believe so.  I don't remember, but I reset the 1 hour time
  478. limit I gave you twice now, possibly three times.  By the way, as
  479. a favor to me in exchange for the time, would you mind terribly
  480. ARCing your capture file and sending me a copy.  I can make it
  481. available as a tutorial to others.  And if you will make it
  482. available to others as well, it is possible that they will come
  483. to know GT PowerComm as well. 
  484.  
  485. Wood: No problem.  I will not be able to do this for a couple of days
  486. however.  My modem is on the blink and I am waiting for a
  487. replacement.  I will upload GT and the Log and CTL files to all
  488. of the bulletin boards that I normally deal with.  I have already
  489. uploaded it to the corporate BBS.  I do expect to get some
  490. healthy ribbing from the ProComm lovers which is why I asked the
  491. question that I did.  For now though I would like to get the Log
  492. file.
  493.  
  494.  
  495. Davis: Thanks for the opportunity to be of help.  I too  must get to
  496. work.  So, I'll take you out of chat mode.  Don't forget to
  497. 'close' your capture file. 
  498.  
  499.  
  500. You have 48 minutes left. 
  501.  
  502.  
  503.                          Jim Davis' Retreat    Voice 713 558-5015
  504.                                                Data  713 497-2306
  505.  
  506.  
  507. *****************************************************************
  508. Following  is a second conversational 'chat' between James  Davis 
  509. and  Raymond Wood designed as a follow-up of the first  one.   It 
  510. takes  on the form of a tutorial again due to the high number  of 
  511. requests for same following the first one we released.
  512. *****************************************************************
  513.  
  514. D:  Shall we start this off with a kind of outline as to where  I 
  515. think  we  will  go  with it?   We  discussed  many  fundamentals 
  516. involved  with communications in the first tutorial and ended  up 
  517. discussing  several of the more popular file transfer  protocols.  
  518. This  session  will  go farther into the area  of  file  transfer 
  519. protocols, technology such as the 9600 bit per second modems  and 
  520. error  correcting modems with MNP or ARQ, and how one goes  about 
  521. intelligently selecting a protocol given a basic understanding of 
  522. their  environment.  For example, while Ymodem was  described  as 
  523. the 'King of the hill' when it comes to performance, that is  not 
  524. true  if you are using one of the packet switching networks.   It 
  525. is also not true at 9600 bits per second.
  526.  
  527. W:   You  mentioned 9600 and MNP.  I thought that  there  was  no 
  528. industry standard  for 9600 and that it is only practical if  the 
  529. other  end is talking the same language with the  same  hardware?  
  530. Also   that   MNP  was  implemented  in  the  hardware   of   the 
  531. modem...where am I wrong ?
  532.  
  533. D:   You're  not wrong.  GT PowerComm (12.20) now  supports  9600 
  534. baud.  I believe the newest version of Qmodem (3.0) does as well.
  535.  
  536. Paul  Meiners,  the  author of GT  PowerComm,  has  a  USRobotics 
  537. HST9600 baud modem and he is using it every day.  I, too, have  a 
  538. USR  HST9600 as well as a Microcom MNP modem that I  am  testing.  
  539. There are two quite different error correction methods in use  at 
  540. this   time.   MNP  (Microcom  Networking  Protocol)  which   was 
  541. developed by Microcom and ARQ (a general term used by USR to mean 
  542. Automatic  Retry  Request protocols - theirs  being  specifically 
  543. called USR-HST [High Speed Technology]) and these two methods are 
  544. totally  incompatible.   Even the methods used to  modulate  9600 
  545. baud  signals  appears  to be  incompatible.   However,  we  have 
  546. successfully  connected these two different brands of  modems  in 
  547. 'reliability' mode.  The USR has the ability to 'fallback' to MNP 
  548. at  1200 or 2400 baud where MNP has established a standard.   (Of 
  549. course, that makes sense for our PCP users).
  550.  
  551. We  have  also connected with other USR HST9600 modems  and  seen 
  552. that  we  have outstanding performance at 9600  baud.   (We  have 
  553. cruised  along at about 945 cps during transfers of more  than  3 
  554. million  bytes  so far).  Further, GT is such an  efficient  comm 
  555. program that we are able to drive these modems at 19,200 bits per 
  556. second from the systems while the modem is communicating at  9600 
  557. to  another modem - for additional performance.  It is  for  this 
  558. very  reason  that  we had to implement flow  control  -  so  the 
  559. transmitting modem does not overrun.  I will discuss this in more 
  560. detail a little later in this tutorial.
  561.  
  562. So, while you are correct that there is no standard at 9600 baud, 
  563. that  does  not  mean  that  9600  baud  modems  are  necessarily 
  564. impractical.  We are determining to what extent it is a  problem.  
  565. What  concerns me the most is the different  modulation  methods.  
  566. Nevertheless, it will not stop our  support  of 9600 baud.
  567.  
  568. Finally, you are right again, MNP (ARQ) is a hardware function  - 
  569. but it can and should be a transparent one.  I note, for example, 
  570. that  since  I began testing these modems I have  connected  with 
  571. several  (many)  others and, as a result,totally  eliminated  the 
  572. line  noise  that was present prior to the MNP connection  -  ie, 
  573. there  appears  to  be  more to MNP than  just  error  free  file 
  574. transfers.  Thus, we must look at it.  And, in doing so, we  will 
  575. test  the various non-error checking protocols that are  used  in 
  576. such  environments  (Ymodem-G,  for example).  It is  as  much  a 
  577. learning  curve  for  us as for the users - we just  MUST  do  it 
  578. behind the scenes for credibility sake.
  579.  
  580. W:   I  understand the necessity to stay  up  with  technological 
  581. advances affecting your your product.  What I am not to clear  on 
  582. is exactly what is MNP or ARQ and why have they come about.   Can 
  583. you shed some light on this? 
  584.  
  585. D:  Since 2400 baud modems are NOT really 2400 'baud' - they  are 
  586. 2400 bits per second,  1200 baud modems - it has been clear  that 
  587. the limit of reliable communications in terms of speed using  the 
  588. bandwidth  of  the  existing telephone  circuitry  has  not  been 
  589. reached.  However, it is also clear that as we more densely  pack 
  590. information  within  that  bandwidth  the  incidence  of   errors 
  591. increases.    The  manufacturers  investigated,   starting   with 
  592. Microcom, various error detection and recovery methods that  were 
  593. hardware  assisted.   That  was the the birth  of  MNP  (Microcom 
  594. Networking  Protocol).   There  has been  an  evolution  in  that 
  595. technology  which  results in several 'levels' of  MNP  available 
  596. today.  The higher the level, the more function is included.   At 
  597. any level, MNP merely insures that the data received by the modem 
  598. is what was sent by the sending modem.  That is INSUFFICIENT,  in 
  599. my  opinion.   The  only  valid scenario  is  one  in  which  the 
  600. receiving  COMPUTER is insured that it received  accurately  what 
  601. the  sending COMPUTER sent.  There are cables,  ports,  circuits, 
  602. timings,  etc.  that MNP DOES NOT CHECK.  Thus, it seems  that  a 
  603. combination   of  software  and  hardware  error  detection   and 
  604. correction methods is necessary.
  605.  
  606. Almost  all  file  transfer protocols check  what  I  believe  is 
  607. necessary  - computer to computer accuracy.  What, then,  is  the 
  608. advantage  of  MNP?   Well, to begin with,   it  SHOULD  be  more 
  609. efficient.   If  the software need only be  concerned  with  data 
  610. bytes  and  not CRC and other control bytes, then  it  should  be 
  611. faster.  Further, the newer levels of MNP are more efficient than 
  612. you  might  have guessed.  They strip off the start bit  and  the 
  613. stop  bits  from  each  byte, for  example,  and  that  increases 
  614. transfer  performance  by 20% (8 bits per byte rather  than  10).  
  615. Further,  they  send 'compressed' data  via  internal  algorithms 
  616. which increases performance even more.   On the other side of the 
  617. ledger,  MNP and ARQ technology has some built  in  disadvantages 
  618. from a performance point of view, they are, after all, no  longer 
  619. just high speed pipes but are now full computers (usually  Z80's) 
  620. and  are  prone  to  modest  slowdowns  at  the  higher   speeds.  
  621. Nevertheless, at 9600 'baud' it is possible to obtain about  1100 
  622. cps  rather than 960 and at 2400 'baud' it is possible to  obtain 
  623. upwards of 290 cps rather than 240.
  624.  
  625. Not to forget, as I mentioned earlier, MNP is active at all times 
  626. while  protocol  transfers are active only during  a  transfer  - 
  627. thus,  line noise is effectively filtered out even while  we  are 
  628. chatting.   There  are  several possible advantages,  and  a  few 
  629. disadvantages - not the least of which is the lack of standards. 
  630.  
  631. W:  Jim,  I understand what you just said and from that it  would 
  632. seem  that  MNP is needed at both ends to do the  job.   Is  that 
  633. correct?  Also is MNP proprietary for just Microcom modems?
  634.  
  635. D:   It  is obviously true that MNP (or ARQ) must exist  on  both 
  636. ends  to be functional.  When my Microcom modem connects  with  a 
  637. non-MNP  modem  it recognizes that fact and reverts  to  being  a 
  638. standard  Hayes  compatible  modem.  Further, when  the  USR  HST 
  639. connects  with  a Microcom that has MNP, there is a  fallback  in 
  640. baud  rates  to  2400  baud  in both  modems  so  that  they  can 
  641. communicate  using MNP.  That is likely to be overridden  by  the 
  642. users, however, via disabling MNP or ARQ in such situations.  (My 
  643. opinion only).  However, it is reasonably certain that 9600  baud 
  644. connections cannot be established without error correction  being 
  645. functional.  Further, while Microcom  MNP is wider used than  ARQ 
  646. (USR's  method), the USR method of supporting both (at  different 
  647. baud rates) is more flexible and argues for USR.  It may be  that 
  648. we obtained the wrong 9600 baud modems at this time.  It is  part 
  649. of the testing and learning process.
  650.  
  651. As  to  the proprietary nature of MNP, according  to  USRobotics, 
  652. Microcom  has placed at least the first three levels of MNP  into 
  653. the public domain.  It is certain that they have been generous in 
  654. licensing out at least the lower 'levels' to other manufacturers.  
  655. What alternative do they have?  Unless a standard evolves,  these 
  656. are contests that damage the future, not advances it.
  657.  
  658. W:   It  seems  obvious that standards in this area  are  to  the 
  659. advantage  of all concerned.  Is there a  standards  organization 
  660. looking into this?  I would like to have 9600 baud capability and 
  661. error   free  transmission.   However,  I  would  also  like   to 
  662. communicate with whomever without having to worry about whats  at 
  663. the other end.  Do you see what I am concerned about?
  664.  
  665. D:   Of course.  It is a paraphrase of my earlier discussion.   I 
  666. think  the  only 'standards organization' that  is  effective  is 
  667. called   the   marketplace.   The  huge  power   of   the   Hayes 
  668. organization, because of its modem standard, is likely to be  the 
  669. telling blow to other manufacturers - when they finally put there 
  670. own  9600  baud technology - may well become  the  new  standard.  
  671. Because  of this I believe it is premature to buy 'long' in  such 
  672. security issues as USRobotics and Microcom. 
  673.  
  674. W:  Whenever I talk to the Hayes people at a convention or  trade 
  675. show, they know or say nothing about 9600 development.  I do  not 
  676. know  if this is just policy or not.  I think that when  they  do 
  677. introduce  9600 that it would not necessarily mean that  whatever 
  678. they  do will be the standard.  I may be naive, but I would  like 
  679. to believe that will be the case.  I say this only because others 
  680. are  active in meeting a need and they are not or appear  not  to 
  681. be.
  682.  
  683. D:  No argument there.  My point remains valid only if Hayes does 
  684. something in the near term.  Intel saw what happens when they get 
  685. over  confident and let competition pass them by when they  first 
  686. put the 8080 micro-computer chip into the marketplace.  They  had 
  687. it  made, save only that the Z80 took it ALL away from them.   It 
  688. was  an awfully long time before they we were able to  come  back 
  689. and Motorola nearly did it to them again.  So, while Hayes has by 
  690. far  the  largest  visible shelf space in  the  industry  at  the 
  691. moment,  USR (my guess) or Microcom could steal it away from lack 
  692. of responsive attention on their part. 
  693.  
  694. W:   It would seem that you need compatible hardware  above  2400 
  695. baud  and  compatible software as well for  truly  effective  and 
  696. increased performance.  Does Paul Meiners' Megalink protocol  tie 
  697. into this somehow?
  698.  
  699. D:   Megalink  is an extremely  efficient  protocol  particularly 
  700. designed  for  the network environments like PCP and  the  higher 
  701. baud  rates.   It  is 'network friendly',  which  means  that  it 
  702. recognizes  and honors flow control imposed by the network.   For 
  703. efficiency  it  uses 512 byte packets (4 blocks), it  is  a  full 
  704. streaming  protocol,  which means it does not ever  stop  sending 
  705. unless  it receives a NAK saying a packet was received in  error, 
  706. and it is batch oriented.  It uses block 0 header information, as 
  707. do all the '...link' protocols so that the resulting file is  the 
  708. same size and properly time and date stamped, and it uses 32  bit 
  709. CRC rather rather than 16. 
  710.  
  711. I  think  it is time to go back to the earlier tutorial  and  add 
  712. some more concepts at this time.
  713.  
  714. Since our last discussion there has been increased popularity  in 
  715. two relatively new file protocols.  The first of these is  called 
  716. SEAlink and the second is Zmodem.  You will recall in the earlier 
  717. discussion  that 'windowing' techniques are beginning  to  become 
  718. available  in  the  file  transfer protocols.   There  is  now  a 
  719. Windowing  Kermit,  for  example,  as  well  as  WXmodem.   These 
  720. programs  attempt  to obtain better performance by  avoiding  the 
  721. start-stop approach used by earlier protocols where after sending 
  722. a  packet  of  data the transmitter would stop and  wait  for  an 
  723. Acknowledgment that the packet had been properly received  before 
  724. sending  the  next  one.  Windowing  protocols  assume  that  the 
  725. packets are being received without error and do not wait  between 
  726. packets.   The  receiving systems DO send ACK signals,  its  just 
  727. that  the transmitter is not waiting for them.  Assuming  all  is 
  728. well, time has been saved as a result.  When an error does occur, 
  729. a  NAK  is returned to the transmitter and associated  with  that 
  730. signal  is  the packet number that was in  error.   Assuming  the 
  731. transmitter  still  has  that packet at its  disposal  it  merely 
  732. retransmits it and proceeds.
  733.  
  734. That is the limit, of course.  In order to be able to  retransmit 
  735. a  packet it must still be in the transmit buffer and the  buffer 
  736. has  a  finite  length.  All windowing protocols  set  a  maximum 
  737. 'window  size'.   This means that there can be no more  than  'x' 
  738. packets sent without a reply before the transmitter is forced  to 
  739. wait for that reply else error recovery would not work.  This  is 
  740. no  big  deal at 1200 baud, but at 2400 and above  it  is  really 
  741. quite limiting.
  742.  
  743. SEAlink  is a windowing protocol.  It has as an  added  advantage 
  744. over WXmodem, for example, two very important features:  it  uses 
  745. 32 bit CRC for reliability, and it is 'network friendly'.  The 32 
  746. bit CRC (4 byte CRC per packet) makes undetected errors virtually 
  747. impossible.  The benefit gained in reliability is at the  expense 
  748. of  having twice as much CRC overhead, however.  Thus,  all  else 
  749. being equal, it would be a little slower than WXmodem.  All  else 
  750. is  not equal.  Performance of SEAlink is not noticably  degraded 
  751. because  of  32-bit CRC though it is  substantially  affected  by 
  752. being Network-friendly.  Further, SEAlink uses a window size of 6 
  753. rather than the 4 used by WXmodem.
  754.  
  755. What  is 'network-friendly'?  It is a design that recognizes  and 
  756. honors  XON/XOFF  signals that are placed on a  packet  switching 
  757. network when that network (like PC Pursuit) becomes so busy  that 
  758. it is nearly choking on data.  When the network places an XOFF on 
  759. the line, a network-friendly recognizes it for what it is  rather 
  760. than  a coincidental configuration of bits in a byte of data  and 
  761. stops  sending data!  It stops until it receives an XON from  the 
  762. network.  Why is that important?  Well, it is my experience  that 
  763. a  huge  number  of subscribers now exists for  PCP.   Forcing  a 
  764. network to exceed its ability to handle data could only crash the 
  765. network.   PCP would not allow that.  They have intelligent  node 
  766. controllers  that selectively will abort a 'hog' link  that  does 
  767. not  honor  its earlier 'request' to wait a  little  (via  XOFF).  
  768. Thus,  using  a  protocol that is not  network-friendly  is  like 
  769. saying: "I don't care if I am a hog.  And, if you don't like  it, 
  770. then abort me."  As usage continues to increase, the network will 
  771. oblige that attitude.
  772.  
  773. The  result  of being network-friendly is two fold  in  terms  of 
  774. 'hits'  against  performance: 1) while you are  waiting  for  the 
  775. network to send you an XON you are not sending data and 2)  there 
  776. are  MANY extra bytes of control information that  definitionally 
  777. must be sent along with your data.
  778.  
  779. Let  me  explain that last point as it is not  obvious,  I  know.  
  780. XOFF  and XON are simply bytes, just like the letter 'A'  or  the 
  781. digit  '4'.  If no data file contained those bytes then it  would 
  782. be  easy  to  implement  a  network-friendly  protocol.   Recall, 
  783. however, that it is almost always true that data is sent in  some 
  784. form  of archive or compressed format.  The resulting  bytes  can 
  785. have  ANY  configuration  despite what  the  un-archived  or  un-
  786. compressed  file  looks  like.   In other  words,  the  odds  are 
  787. essentially  100%  that the data files that you send  consist  of 
  788. probably  many bytes that look like XOFF or XON.  That cannot  be 
  789. allowed  to  happen.   The  protocol finds  all  such  bytes  and 
  790. encapsulates  them  in  what is called an  escape  sequence  that 
  791. consists  of a special byte (usually the DLE character)  followed 
  792. by a 'folded' duplicate of the byte that needed to be camouflaged 
  793. (the  XON  or  XOFF).   Folding merely means  that  the  byte  is 
  794. transmogrified  in  some  way  (usually  via  being  sent  as   a 
  795. compliment  -  XORed with all 1's).  Further, the  DLE  character 
  796. itself must also be escape sequenced for this method to work.  It 
  797. is a random process that results in indeterminate performance for 
  798. any particular file.  That is, if a file had none of these  three 
  799. special  byte  combinations in it, then the time to  transmit  it 
  800. would be minimal where a file that happened to have many of  them 
  801. will  have  that  many  more bytes to send  in  order  to  escape 
  802. sequence  it.   In  such a case the file  would  take  longer  to 
  803. transmit than the first.  Same protocol, different performance.
  804.  
  805. On  balance, the designers of SEAlink did an excellent job.   The 
  806. performance  of SEAlink is essentially as good as WXmodem yet  it 
  807. is more reliable and it is network-friendly.  Incidentally,  they 
  808. also escape sequenced a fourth byte - the SYN.  It is for  rather 
  809. obscure reasons and I believe a mistake.  Why is SEAlink becoming 
  810. so  popular?   Because  it is a protocol supported  under  a  BBS 
  811. system  called  OPUS which is quickly replacing most of  the  old 
  812. FIDO systems all over the country.  It is a good protocol.
  813.  
  814. The next one of interest is called Zmodem.  This is almost always 
  815. found  as an external protocol.  That means it is included  in  a 
  816. file  (DSZ.EXE)  that  is  shelled to by  the  host  or  terminal 
  817. communications program when it is needed.  As such, it requires a 
  818. lot of memory compared to the internal protocols.  But because of 
  819. that,  it is easy to install as a protocol offering of  many  BBS 
  820. systems.   There  is  another  and  more  significant  difference 
  821. between Zmodem and the other protocols we have already  discussed 
  822. so  far.  Instead of being start-stop in nature, and  instead  of 
  823. being  windowing,  it  is  a  streaming  protocol.   A  streaming 
  824. protocol  does  not expect to get ANY ACK signals back  from  the 
  825. receiver  until the transfer is complete and successful.   If  an 
  826. error  occurs  it  will  receive  a NAK  and  it  is  up  to  the 
  827. transmitter to insure that it can recover from any NAK  received.  
  828. Thus,  because  it  is not a windowed  protocol  it  never  stops 
  829. transmitting  unless there is an error.  That means it should  be 
  830. faster than even the windowing protocols.
  831.  
  832. Unfortunately,  while Zmodem uses 32-bit CRC for reliability,  it 
  833. is  NOT  network-friendly.   In some ways it is  not  even  user-
  834. friendly.  For example, in every other protocol there is a way to 
  835. terminate  the transfer should you wish to do so while it  is  in 
  836. progress.   The usual manner is to press Cntl-X one or two  times 
  837. and  wait  till the other end recognizes the  abort  request  and 
  838. finally stops.  In the case of Zmodem you must press 10! times in 
  839. a row to stop it.  I suggest that not 1 user in a thousand  knows 
  840. that.  It is a popular protocol as a result of its performance on 
  841. the  packet  switching  networks.  Because  it  is  not  network-
  842. friendly  it  does not bother with (it doesn't  have  to)  escape 
  843. coding anything.  That is probably a fatal mistake to its  future 
  844. particularly as the networks get crowded.
  845.  
  846. Included  in  GT  PowerComm 12.20 is  the  newest  file  transfer 
  847. protocol.   It  is called MegaLink.  It uses 32-bit  CRC,  it  is 
  848. network-friendly, is faster than Sealink, and like all the 'link' 
  849. named  protocols  it uses a header record that results  in  exact 
  850. size and proper time and date stamping of the resulting file when 
  851. received.   Most  interesting  about  MegaLink  is  how  well  it 
  852. performs  at  the very highest baud rates.   Running  comparative 
  853. tests of four different protocols, all sending the same 880K file 
  854. to  the same machine and at 9600 baud, I obtained  the  following 
  855. results:
  856.  
  857.     WXmodem   60.4 % efficiency  580 cps
  858.     SEAlink   75.6 %             725 cps
  859.     Ymodem    77.6 %             744 cps
  860.     Zmodem         unsuccessful*
  861.     MegaLink  98.5 %             945 cps
  862.  
  863. In order, WXmodem did so poorly for two reasons: at 9600 baud its 
  864. window limit of 4 is the same as not having a windowing technique 
  865. at  all.   Second,  there are ACK signals coming  back  for  each 
  866. packet  sent.  In the 9600 baud arena, the transmission  is  only 
  867. 9600 baud in one direction and only 300 baud in the other!  It is 
  868. transparent,   more  or  less,  to  the  users  as   the   modems 
  869. automatically change which direction is at 9600 baud based on the 
  870. volume of data that needs to be sent in each direction at any one 
  871. time.   Further, while one character (the ACK itself at 300  baud 
  872. is  not significant, the ACK/NAK response is actually either  two 
  873. or  three  bytes  rather  than one  as  you  might  expect.   The 
  874. additional byte(s) is for packet number (and it's compliment).
  875.  
  876. SEAlink is being driven about as fast as it can go.  It is not as 
  877. fast as Ymodem because of the small window it uses (like WXmodem) 
  878. and because it has so many more characters to transmit because it 
  879. is network-friendly (escape sequences).
  880.  
  881. Ymodem  is  going as fast as it can.  It  is  effected  primarily 
  882. because  of  the start-stop nature of its function and  the  fact 
  883. that  the  ACK/NAKs  are coming back at 300 baud.   Here  we  see 
  884. clearly  an indication that the days of the start-stop  protocols 
  885. are numbered.
  886.  
  887. As an aside, Ymodem-G would have performed MUCH better because it 
  888. has  no  error  control  whatever, thus it  has  fewer  bytes  to 
  889. transmit and no turnaround delays.  Remember, however, that error 
  890. correcting modems are only capable of insuring that the data sent 
  891. from  one  modem is received reliably by the other.  As  will  be 
  892. seen  in  the  discussion later  about  Zmodem's  total  failure, 
  893. Ymodem-G would not have reliably worked in this test.
  894.  
  895. It  is  interesting that Zmodem failed altogether at  9600  baud.  
  896. The  reason is a little subtle and it leads to the next  thing  I 
  897. wanted to discuss anyway.
  898.  
  899. I earlier mentioned that the MNP and ARQ modems are able to strip 
  900. the  start  and  stop bits from bytes, (they must,  thus,  be  in 
  901. synchronous  mode rather than asynchronous), and that  they  also 
  902. may  use  a  form  of compression  beyond  that  for  performance 
  903. reasons.   I  further stated that at 9600 baud the  modem  I  was 
  904. using was able to perform at 1100 cps rather than 960.  This  may 
  905. have  caused  you  to  ponder: if the modem  is  connect  to  the 
  906. computer  at 9600 baud that means the computer can only send  960 
  907. characters  per second to the modem for subsequent  transmission.  
  908. So how can the modem send it any faster than it receives it?
  909.  
  910. The answer is that it cannot do so.  The method to use to  obtain 
  911. these  extraordinary performances is to connect your computer  to 
  912. the  modem  at 19,200 baud and utilize a buffer in the  modem  to 
  913. match  up the input with the output.  Naturally, as the  data  is 
  914. arriving at the modem much faster than it is leaving, there  must 
  915. be  a way to stop the input.  Well, you guessed it, we  use  flow 
  916. control just like the networks when they are getting choked.   In 
  917. particular, we sense that the modem's Clear To Send signal is  on 
  918. or  off.   When off, we stop sending data to it and when  on,  we 
  919. instantly start cramming data at it at 19,200 baud.  In this way, 
  920. the modem is able to send data at 1100 cps.  Naturally, the modem 
  921. must  be  able  to  control its CTS  signal  for  this  to  work.  
  922. USRobotics HST is capable of doing so.
  923.  
  924. I showed you what happened to Zmodem when we tried to transfer to 
  925. it  at in excess of 9600 baud - it failed.  That is not  entirely 
  926. the fault of Zmodem, however.  Unless the receiving system is  of 
  927. the AT class of computers you will probably find that  regardless 
  928. of  what  kind of software you are using with it,  the  modem  is 
  929. faster  than the computer's ability to feed it or eat  from  it!!  
  930. Now that is amazing, isn't it?  We now have modems that are paced 
  931. by  the  computer they are attached to instead of the  other  way 
  932. around.
  933.  
  934. Incidentally,  unless  the receiving computer is connect  to  the 
  935. receiving  modem  at  19,200  instead  of  9600  baud,  and   has 
  936. implemented some form of flow control to signal the sending modem 
  937. that  it's  buffer  is full, 1100 cps transmissions  to  it  will 
  938. naturally fail when the buffer is overflowed.
  939.  
  940. *****************************************************************
  941. This  is the third in a series of tutorials that I hope  will  be 
  942. found  to  be  useful  to  both  new  and  experienced  users  of 
  943. communications  facilities.
  944. *****************************************************************
  945.  
  946. Q:  Why is it that I experience so much more line noise than  the 
  947. people I call?  It seems that I see noise on my screen with  some 
  948. frequency,  but if I ask the party that I have called if he  sees 
  949. it too, I'm usually told his screen is clean.  Is there something 
  950. wrong with my system?
  951.  
  952. A:  The odds are twice as great that you will have line noise  if 
  953. you  place a call to a computer than if a computer were  to  call 
  954. you.  It is normal and easily explainable.
  955.  
  956. While  it is true that the odds are twice as great that you  will 
  957. experience  or  know  about  noise in the  case  where  you  have 
  958. initiated the call, the incidence of noise is the same regardless 
  959. of who places that call (assuming the same lines and circuits are 
  960. being used in both cases).  The reason for this is that when  you 
  961. are  in Terminal mode (placing the call), your system is  set  to 
  962. full-duplex operation and when it is in Host mode (auto  answer), 
  963. it is in half duplex.
  964.  
  965. Full  duplex means that whatever you type on your  keyboard  does 
  966. not  get  sent  to  your screen.  It is  sent,  instead,  to  the 
  967. communications port and from there it travels through your modem, 
  968. along  the telephone lines to an answering modem, and then  to  a 
  969. host sytem.  The host system then sends it back to you.  In  half 
  970. duplex, on the other hand, whatever you type is sent to both your 
  971. communications port and to your screen.  From this it is  obvious 
  972. that  every character seen on your screen when you have placed  a 
  973. call  has  gone through the telephone system while only  half  of 
  974. what  is  seen  on  the host system's  screen  has  been  on  the 
  975. telephone circuit before it got there. 
  976.  
  977. Further,  line  noise  can be unidirectional.  That  is,  it  may 
  978. appear  as  data  travels in only one  direction  or  the  other.  
  979. Regardless  of  that fact, it will be seen by the  terminal  mode 
  980. user (data must go both ways before it reaches the screen) and if 
  981. it appears only on the link from the host to the terminal user it 
  982. will never be seen by the host.
  983.  
  984. Q:  The last tutorial you wrote told us about MNP and ARQ  modems 
  985. being able to eliminate most line noise.  How do they do that?
  986.  
  987. A:  Part of that answer is still a mystery to me, but I know  how 
  988. it  does it in theory at least.  I will tell you why part of  the 
  989. answer  remains  a  mystery  in  a  moment.   First,  recall  the 
  990. discussion  we  had about file transfer protocols.  All  of  them 
  991. utilize  some form of CRC mechanism to insure that the  receiving 
  992. system  had  received  all  of  the  contents  of  a  packet   of 
  993. information  without  having dropped any bits or  picked  up  any 
  994. extra  bits.   The CRC is a byte or a word of data  that  is  the 
  995. result of an algoritm that 'folds' every byte in the data  packet 
  996. onto itself in such a way as to result in a pattern of bits  that 
  997. can be calculated by the receiving system as each byte of data is 
  998. received  and  then compared with the CRC  that  is  subsequently 
  999. received.  If there is a mismatch then the data (or CRC byte) did 
  1000. not  get  received correctly.  The MNP and ARQ  modems  implement 
  1001. this  strategy within themselves.  All data that  is  transmitted 
  1002. from  one  of  these modems is re-packaged into  what  the  modem 
  1003. manufacturers  call 'frames' (packets) before being  transmitted.  
  1004. Each frame is followed by a CRC byte or word that is stripped off 
  1005. by  the  receiving modem and used to determine if the  frame  was 
  1006. received correctly.  Line noise simply makes that CRC check  fail 
  1007. and the result is an automatic retransmission of the frame.
  1008.  
  1009. As you can see from the above, the modem is now acting just  like 
  1010. your  computer  does during file transmissions using  a  protocol 
  1011. transfer  method.  This is not done for 'free'.  The overhead  of 
  1012. doing  so results in less than rated speeds in every case.   That 
  1013. is, the theoretical maximum data rate of a 1200 baud modem is 120 
  1014. characters  per second, but MNP and ARQ modems are  sending  more 
  1015. characters between themselves than the sending system itself.  If 
  1016. there  are  errors and, thus, an automatic  retransmission  of  a 
  1017. frame,  the  sending  modem is very likely to  have  to  ask  the 
  1018. sending  computer  to  wait for it.  It is  estimated  that  this 
  1019. overhead (even without errors) results in a degradation of  about 
  1020. 12%  in  terms of the maximum possible performance of  the  modem 
  1021. yielding about 106 characters per second possible throughput.  To 
  1022. counter that built in degradation, the modems strip the start and 
  1023. stop bits from each byte and send only 8 bits rather than the  10 
  1024. (or  eleven) that are sent by non-error-correcting modems.   This 
  1025. increases  the efficiency by about 20%.  The net effect is  that, 
  1026. assuming  no  errors,  the possibility of  about  108%  of  rated 
  1027. performance.   (It  is possible to get about 130  characters  per 
  1028. second  rather than 120 if there are no errors - this also  fails 
  1029. to  account for additional 'compression' methods built into  some 
  1030. of these modems).
  1031.  
  1032. So,  where is the confusion?  Well, the above assumes there is  a 
  1033. stream  of data being sent that can be 'framed'.  How the  modems 
  1034. function  when a user is merely typing one or two  characters  or 
  1035. words  at  a time before the other side responds  is  a  mystery.  
  1036. Indeed,  as  each  character  is  typed  it  is  sent  down-line.  
  1037. Presumably there is a timeout of some kind in the modem that says 
  1038. that if another character is not entered within x milliseconds it 
  1039. is presumed that the frame is complete and it is sent along  with 
  1040. its  CRC.   However it does it in practice, it does  seem  to  be 
  1041. effective at eliminating line noise.
  1042.  
  1043. Q:   So MNP and ARQ modems are faster and eliminate  line  noise.  
  1044. Sounds  like  the way to go.  Are there any  negatives  to  their 
  1045. usage?
  1046.  
  1047. A:   Interesting  question.   Assuming  that  you  use   protocol 
  1048. transfer   methods  in  addition  to  the  error  detection   and 
  1049. correction logic of the modems themselves, I can only think of  a 
  1050. couple of negatives at the moment.  The first, of course, is  the 
  1051. lack of standards, particularly at the higher baud rates.  Second 
  1052. is  the  fact that every time you use one to call a  system  that 
  1053. does  not use MNP or ARQ (the vast majority of them do not)  then 
  1054. you automatically lose part of their opening screens.
  1055.  
  1056. Let  me  explain that.  When an MNP or ARQ modem  first  connects 
  1057. with  another modem the calling modem issues a sequence of  bytes 
  1058. that  is  asking the answering modem if it is also  MNP  or  ARQ.  
  1059. These bytes include an id and an indication of the level of  MNP, 
  1060. for  example,  that  the  caller is  using.   The  first  set  of 
  1061. characters that come back from the called modem are then consumed 
  1062. by  the  modem rather than passed through to the  user's  screen.  
  1063. Thus,  they are lost to your system.  Very often it is  necessary 
  1064. for  the calling system user to press his Enter key in  order  to 
  1065. cause  subsequent  characters  to be  passed  through  the  modem 
  1066. (telling  it  in  effect, to turn off MNP or ARQ).   This  is  an 
  1067. annoyance  to the terminal mode user but it can be worse for  the 
  1068. host system.
  1069.  
  1070. With the introduction of release 12.20 of GT PowerComm there  has 
  1071. been  some controversy as to the existence of the opening  prompt 
  1072. that  it issues in which it asks if the caller wants to use  ANSI 
  1073. graphics  or  not.   Many users seem mildly  annoyed  that  their 
  1074. selection is not recorded somewhere so they don't have to  answer 
  1075. that prompt more than once.  What they fail to understand is that 
  1076. the  prompt is there for several reasons.  MNP is a good  example 
  1077. of what I mean as is the possibility of noise on the line.
  1078.  
  1079. When  an  MNP  call comes in, those  initial  characters  I  just 
  1080. mentioned 'hit' the prompt and result in reissuance of it.  We do 
  1081. not permit a default to that prompt so that we do not go past  it 
  1082. with  noise  or MNP.  By the time a Y or N is  entered,  the  MNP 
  1083. sequence  of  handshake signalling is done.  If we did  not  have 
  1084. that  initial  prompt then the first question the user  would  be 
  1085. asked  would be his first name.  Ask any Sysop how  many  garbage 
  1086. names  he  has  in his user base.  If there are any  then  I  can 
  1087. reasonably  assure  you that his system does not have  a  leading 
  1088. prompt such as ours to protect him from noisy incoming calls  (or 
  1089. MNP).
  1090.  
  1091. Q:  Is 9600 baud the theoretical limit to technology in terms  of  
  1092. modems?
  1093.  
  1094. A:    Hardly.   It  appears  that  9600  'baud'   stretches   the 
  1095. reliability limits of today's unconditioned telephone system, but 
  1096. modems  exist  that  are much, much  faster  than  that  already.  
  1097. 19,200 bits per second modems are functional on conditioned lines 
  1098. even  now.   As  to limits, well, did  you  know  that  satellite 
  1099. communications   capabilities  exist  that  already  permit   the 
  1100. transfer of over a million bits per second?  
  1101.  
  1102. Over  the past 20 years there has been a rather constant rate  of 
  1103. improvemnt  in all aspects of data processing technology.   As  a 
  1104. rule  of  thumb that is pretty close consider this:   Every  four 
  1105. years   there   has   been   a   three   fold   improvement    in 
  1106. performance/capacity  for  only  a two fold  increase  in  price.  
  1107. Sometimes  we forget how long this trend has been in effect,  but 
  1108. an  IBM advertisement a few years back made it pretty clear.   At 
  1109. that  time the ad suggested that if the automobile  industry  had 
  1110. enjoyed the same rate of improvements over the past 20 years that 
  1111. the  data  processing industry has enjoyed, then every  adult  in 
  1112. this country could afford to own a Rolls Royce, as it would  cost 
  1113. only  about  $20  and, incidently, it would get  about  2,000,000 
  1114. miles  to  the  gallon  of gasoline.   For  a  more  contemporary 
  1115. example,  we  need only look back at the original IBM  PC.   That 
  1116. machine  had  320K disk drives and a clock speed  of  4.77  micro 
  1117. seconds.  Today you can buy a Compaq 386 that is 17 times  faster 
  1118. than  the  original PC (throughput) and you can get  it  off  the 
  1119. shelf  with  130  megabyte hard disk.  The price  of  this  newer 
  1120. machine is less than three times the original PC, closer to twice 
  1121. the  price.  No, we are not at the limit of technology, not by  a 
  1122. long shot.
  1123.  
  1124.